/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package pe.edu.upc.dew.proyecto.controller;

import java.io.IOException;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;
import pe.edu.upc.dew.proyecto.model.Medico;
import pe.edu.upc.dew.proyecto.model.Paciente;
import pe.edu.upc.dew.proyecto.model.Persona;
import pe.edu.upc.dew.proyecto.model.Usuario;
import pe.edu.upc.dew.proyecto.service.PersonaService;
import pe.edu.upc.dew.proyecto.service.ServicioService;
import pe.edu.upc.dew.proyecto.service.UsuarioService;

/**
 *Controladora depreciada, no se usa
 * @author Tomas
 */
public class IngresoServlet implements Controller {

    private PersonaService personaService;
    private UsuarioService usuarioService;
    private ServicioService servicioService;
    private Collection resultados= new ArrayList();

    


    public ModelAndView handleRequest(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        
        // Recuperamos los parametros del jsp
        // Se relaciona al atributo "name"
        ModelAndView modAndView = null;

        String username = req.getParameter("username");
        String password = req.getParameter("password");
        String copersona = req.getParameter("copersona");
        Usuario usuario = null;
        if (copersona==null){
            usuario = usuarioService.getUsuarioPorUsername(username);
        }
        else{
            usuario = usuarioService.getUsuarioPorCoPersona(Integer.parseInt(copersona));
            username =usuario.getUsername();
            password = usuario.getPassword();
        }
        if (usuario==null){
            req.getRequestDispatcher("index.jsp").forward(req, resp);
        }
        else{
            if (usuario.getPassword().equals(password)){

                Persona persona = personaService.getPersonaPorUsername(username);

                req.setAttribute("persona", persona);

                req.setAttribute("usuario", usuario);

//                Session sesion;
//                sesion.

                
                //Si es paciente
                if (persona instanceof Paciente){

                    try {
                        resultados = servicioService.seleccionarResultadosPaciente(persona.getCoPersona());
                    } catch (SQLException ex) {
                        Logger.getLogger(IngresoServlet.class.getName()).log(Level.SEVERE, null, ex);
                        //req.getRequestDispatcher("error.jsp").forward(req, resp);
                    }



                    req.setAttribute("resultados", resultados);

                    req.getRequestDispatcher("ResultadosPaciente.jsp").forward(req, resp);

                }

                //Si es medico
                if (persona instanceof Medico ){
                    try {
                        //resultados = rmDao.seleccionarResultados("38");
                        resultados = servicioService.seleccionarResultadosMedico(persona.getCoPersona());
                    } catch (SQLException ex) {
                        Logger.getLogger(IngresoServlet.class.getName()).log(Level.SEVERE, null, ex);
                        //req.getRequestDispatcher("error.jsp").forward(req, resp);
                    }

//                    modAndView =  new ModelAndView("clientes", "clientes", resultados);
                    req.setAttribute("resultados", resultados);
                    req.getRequestDispatcher("resultadosMedico.jsp").forward(req, resp);
                }

            } else {
                req.getRequestDispatcher("index.jsp").forward(req, resp);
            }
        }
        return modAndView;
    }

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /**
     * Handles the HTTP <code>GET</code> method.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
//    @Override
//    protected void doGet(HttpServletRequest request, HttpServletResponse response)
//    throws ServletException, IOException {
//        processRequest(request, response);
//    }
//
//    /**
//     * Handles the HTTP <code>POST</code> method.
//     * @param request servlet request
//     * @param response servlet response
//     * @throws ServletException if a servlet-specific error occurs
//     * @throws IOException if an I/O error occurs
//     */
//    @Override
//    protected void doPost(HttpServletRequest request, HttpServletResponse response)
//    throws ServletException, IOException {
//        processRequest(request, response);
//    }
//
//    /**
//     * Returns a short description of the servlet.
//     * @return a String containing servlet description
//     */
//    @Override
//    public String getServletInfo() {
//        return "Short description";
//    }// </editor-fold>


    public Collection getResultados() {
        return resultados;
    }

    public void setResultados(Collection resultados) {
        this.resultados = resultados;
    }

    public void setPersonaService(PersonaService personaService){
        this.personaService = personaService;
    }

    public void setUsarioService(UsuarioService usuarioService){
        this.usuarioService=usuarioService;
    }
    public void setServicioService (ServicioService servicioService){
        this.servicioService = servicioService ;
    }
}
